<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Usuario extends CI_Controller {

	public function __construct(){
		parent::__construct();
		$this->load->model('usuario_model','usuario');
		$this->load->model('alegro_model','alegro');
	}
	
	public function index(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			$this->listar();
		}
	}
	
	//LISTAR USUÁRIOS
	public function listar(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			
			$dados = array(
					'titulo' 			=> 'Usuários',
					'subtitulo' 		=> 'Listar',
					'funcionalidade' 	=> 'Listagem avançada',
					'botaopadrao'		=> 'Adicionar Usuário',
					'modulo'			=> 'usuario',
					'tela' 				=> 'listar',
					'usuarios'			=> json_encode($this->usuario->get_all()),
			);
			$this->parser->parse('index', $dados);
		}
	}
	
	//ADICIONAR USUÁRIO
	public function adicionar(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			
			if ($this->input->post() != "") {
// 				if ( $this->input->post('usu_codigo') != "" && is_numeric($this->input->post('usu_codigo'))) {
// 					$this->atualizar();
// 				}
					
				//validação do form
				$this->form_validation->set_rules('usu_codigo_singem', 'CÓDIGO REPRESENTANTE SINGEM', 'trim|required|integer|max_length[2]');
				$this->form_validation->set_rules('usu_grupo', 'GRUPO', 'trim|required|integer');
				$this->form_validation->set_rules('usu_nome', 'NOME', 'trim|required|max_length[100]|ucwords');
				$this->form_validation->set_rules('tip_codigo_tipo_usuario', 'Tipo Usuário', 'trim|required|integer');
				$this->form_validation->set_rules('usu_senha', 'SENHA', 'trim|max_length[32]|matches[usu_confirma_senha]');
				$this->form_validation->set_rules('usu_confirma_senha', 'CONFIRME A SENHA', 'trim|max_length[32]');
					
				//$this->form_validation->set_message('is_unique', 'Este %s já está cadastrado no sistema');
				//$this->form_validation->set_rules('usu_email', 'E-MAIL', 'trim|max_length[50]|strtolower|valid_email|is_unique[tbl_usuario.usu_email]');
				$this->form_validation->set_rules('usu_email', 'E-MAIL', 'trim|max_length[50]|strtolower|valid_email');
				$this->form_validation->set_rules('usu_status', 'STATUS', 'trim|integer');
					
				$dados = elements(array('usu_codigo_singem', 
										'usu_grupo', 
										'usu_nome', 
										'tip_codigo_tipo_usuario', 
										'usu_senha', 
										'usu_email', 
										'usu_status', 
										'usu_excluido'
										), $this->input->post(NULL, TRUE)
				);
					
				if ($this->form_validation->run() == true){
					
					if ($this->usuario->verifica_email($dados['usu_email'])){
						$this->session->set_flashdata('adicionarerro', 'E-mail já cadastrado! Por favor, insira outro e-mail!');
						redirect('usuario/adicionar');
					}
					
					//Criptografa a senha a ser inserida no banco
					$dados['usu_senha'] = $this->encrypt->sha1($dados['usu_senha']);
					$dados['usu_excluido'] = 0;
					$this->usuario->do_adicionar($dados);
				}
					
				$dados += array(
						'titulo' 			=> 'Usuários',
						'subtitulo' 		=> 'Adicionar',
						'funcionalidade' 	=> 'Adicionar Usuário',
						'botaopadrao'		=> 'Adicionar',
						'botaolimpar'		=> 'Limpar',
						'modulo'			=> 'usuario',
						'tela' 				=> 'adicionar',
						//'tipo_usuario'		=> $this->usuario->get_tipo_usuario(),
						'tipo_usuario'		=> json_encode($this->usuario->get_tipo_usuario()),
				);
			} else {
				$dados = array(
						'titulo' 			=> 'Usuários',
						'subtitulo' 		=> 'Adicionar',
						'funcionalidade' 	=> 'Adicionar Usuário',
						'botaopadrao'		=> 'Adicionar',
						'botaolimpar'		=> 'Limpar',
						'modulo'			=> 'usuario',
						'tela' 				=> 'adicionar',
						'tipo_usuario'		=> json_encode($this->usuario->get_tipo_usuario()),
						//'tipo_usuario'		=> $this->usuario->get_tipo_usuario(),
				);
			}
			$this->parser->parse('index', $dados);
		}
	}
	
	//ATUALIZAR USUÁRIO
	public function atualizar(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			if ($this->input->post() != "") {
				if ( $this->input->post('usu_codigo') != "" && is_numeric($this->input->post('usu_codigo')) ){
					
					//validação do form
					$this->form_validation->set_rules('usu_codigo_singem', 'CÓDIGO REPRESENTANTE SINGEM', 'trim|required|integer');
					$this->form_validation->set_rules('usu_grupo', 'GRUPO', 'trim|required|integer');
					$this->form_validation->set_rules('usu_nome', 'NOME', 'trim|required|max_length[100]|ucwords');
					$this->form_validation->set_rules('tip_codigo_tipo_usuario', 'Tipo Usuário', 'trim|required|integer');
					$this->form_validation->set_rules('usu_email', 'E-MAIL', 'trim|max_length[50]|strtolower|valid_email|callback_unique_email');
					$this->form_validation->set_rules('usu_status', 'STATUS', 'trim|integer');
						
					$dados = elements(array('usu_codigo_singem', 'usu_grupo', 'usu_nome', 'tip_codigo_tipo_usuario', 'usu_email', 'usu_status'), 
										$this->input->post(NULL, TRUE)
					);
						
					if ($this->form_validation->run() == true){
						$this->usuario->do_atualizar($dados, array('usu_codigo'=>$this->input->post('usu_codigo')));
					}
		
					$dados += array(
							'titulo' 			=> 'Usuários',
							'subtitulo' 		=> 'Atualizar',
							'funcionalidade' 	=> 'Atualizar Usuário',
							'botaopadrao'		=> 'Atualizar',
							'botaolimpar'		=> 'Limpar',
							'modulo'			=> 'usuario',
							'tela' 				=> 'atualizar',
							//'tipo_usuario'		=> $this->usuario->get_tipo_usuario(),
							'tipo_usuario'		=> json_encode($this->usuario->get_tipo_usuario()),
					);
				} else {
					$this->session->set_flashdata('edicaook', 'Erro, Registro não encontrado!');
					redirect('usuario/listar');
				}
			} else {
				if (!$id = $this->uri->segment(3)) {
					redirect('usuario/listar');
				} else {
					$return = array($this->usuario->get_byid($id));
					
// 					echo "<pre>";
// 					print_r($return);
// 					exit;
					
					$data = $return[0];
		
					foreach ($data as $key=>$value) {
						$dados[$key] = $value;
					}
					$dados += array(
							'titulo' 			=> 'Usuários',
							'subtitulo' 		=> 'Atualizar',
							'funcionalidade' 	=> 'Atualizar Usuário',
							'botaopadrao'		=> 'Atualizar',
							'botaolimpar'		=> 'Limpar',
							'modulo'			=> 'usuario',
							'tela' 				=> 'atualizar',
							//'tipo_usuario'		=> $this->usuario->get_tipo_usuario(),
							'tipo_usuario'		=> json_encode($this->usuario->get_tipo_usuario()),
					);
					
				}
			}
			$this->parser->parse('index', $dados);
		}
	}
	
	public function unique_email($email){
		$result = $this->alegro->get_byemail($email, 'tbl_usuario', 'usu_email');
	
		if ($result == null){
			return TRUE;
		} else {
			if ($this->input->post('usu_email') == $result->usu_email){
				return TRUE;
			} else {
				$this->form_validation->set_message('unique_email', 'Este %s já está cadastrado no sistema');
				return FALSE;
			}
		}
	}
}